package com.cqie.rbac.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cqie.rbac.entity.SysRole;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 角色实体 Mapper 接口
 * </p>
 *
 * @author 夏兵
 * @since 2021-09-02
 */
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {

    /**
     * 为用户添加新角色
     *
     * @param usrId  用户id
     * @param roleId 角色id
     * @return 添加结果
     */
    @Insert("INSERT INTO user_role VALUES(${usrId},${roleId})")
    int addUserRole(@Param("usrId") Long usrId, @Param("roleId") Long roleId);

    /**
     * 删除用户角色
     *
     * @param usrId 用户id
     * @return 影响条数
     */
    @Delete("DELETE FROM user_role ur WHERE ur.user_id = ${usrId}")
    int deletUserRole(@Param("usrId") Long usrId);

    /**
     * 新增角色菜单
     *
     * @param roId   角色id
     * @param menuId 菜单id
     * @return 影响结果
     */
    @Insert("INSERT INTO role_menu VALUES(${roId}, ${menuId})")
    int addRoleMenu(@Param("roId") Long roId, @Param("menuId") Long menuId);

    /**
     * 删除角色的对应菜单
     *
     * @param roId 角色id
     * @return 影响结果
     */
    @Delete("DELETE FROM role_menu rm WHERE rm.role_id = ${roId}")
    int deleteRoleMenu(@Param("roId") Long roId);

    /**
     * 删除用户拥有的角色
     * @param roId 角色id
     * @return 返回影响条数
     */
    @Delete("DELETE FROM user_role ur WHERE ur.role_id = ${roId}")
    int deleteUserRole(@Param("roId") Long roId);
}
